800A05D8	0x	7F00	close window
LW	V1,028C (A0)
LW	T6,0000 (A1)
ADDIU	V0,R0,0002
ANDI	T7,V1,0008
BEQ	T7,R0,800A0604
SW	T6,02A0 (A0)
ADDIU	AT,R0,FFF7
AND	T8,V1,AT
SW	T8,028C (A0)
JR	RA
ADDIU	V0,R0,0001
//800A0604:	
ORI	T9,V1,0008
SW	T9,028C (A0)
JR	RA
NOP	

800A0614	0x	7F01	open window; same as close window!?
LW	V1,028C (A0)
LW	T6,0000 (A1)
ADDIU	V0,R0,0002
ANDI	T7,V1,0008
BEQ	T7,R0,800A0640
SW	T6,02A0 (A0)
ADDIU	AT,R0,FFF7
AND	T8,V1,AT
SW	T8,028C (A0)
JR	RA
ADDIU	V0,R0,0001
//800A0640:
ORI	T9,V1,0008
SW	T9,028C (A0)
JR	RA
NOP

800A0650	0x	7F02	clear dialog box
ADDIU	SP,SP,FFE8
SW	RA,0014 (SP)
SW	A0,0018 (SP)
OR	A2,A1,R0
LW	A1,0000 (A2)
SW	A2,001C (SP)
JAL	8009DC04
LW	A0,0018 (SP)
LW	A2,001C (SP)
LW	A0,0018 (SP)
LW	T6,0000 (A2)
ADDU	T7,T6,V0
SW	T7,0000 (A2)
JAL	8009E344
SW	T7,02A0 (A0)
LW	A0,0018 (SP)
JAL	8009E374
LUI	A1,4120
ADDIU	V0,R0,0002
LW	RA,0014 (SP)
ADDIU	SP,SP,0018
JR	RA
NOP

800A06AC	0x	7F03	wait i 1/100secs
ADDIU	SP,SP,FFE0
SW	RA,0014 (SP)
OR	A2,A1,R0
LW	A1,0000 (A2)
SW	A2,0024 (SP)
JAL	8009DE6C		;returns F0=wait value converted to float
SW	A0,0020 (SP)
LW	A2,0024 (SP)
LW	A0,0020 (SP)
LW	A1,0000 (A2)
JAL	8009DC04		;advance
SWC1	F0,001C (SP)
LW	A2,0024 (SP)
LW	A0,0020 (SP)
LWC1	F12,001C (SP)	;F12=wait value
LW	T6,0000 (A2)
ADDU	T7,T6,V0
SW	T7,0000 (A2)
LW	T9,02BC (A0)
SW	T7,02A0 (A0)
BEQL	T9,R0,800A0710
MTC1	R0,F4
BEQ	R0,R0,800A0760
OR	V0,R0,R0
MTC1	R0,F4
//800A0710:
OR	V0,R0,R0
C.LT.S	F4,F12
NOP
BC1F	800A0760
NOP
LW	T0,028C (A0)
SWC1	F12,0294 (A0)
LUI	AT,3F80
ANDI	T1,T0,0100
BEQ	T1,R0,800A0750
NOP
MTC1	AT,F12
JAL	8009FA58
NOP
BEQ	R0,R0,800A0760
ADDIU	V0,R0,0002
//800A0750:
JAL	8009FA58
NOP
BEQ	R0,R0,800A0760
ADDIU	V0,R0,0002
//800A0760:
LW	RA,0014 (SP)
ADDIU	SP,SP,0020
JR	RA
NOP

800A0770	0x	7F04	pause (blue arrow)
ADDIU	SP,SP,FFE8
SW	RA,0014 (SP)
OR	A2,A1,R0
LW	V1,028C (A0)	;V1=control switch
ADDIU	AT,R0,FFF7
ANDI	T6,V1,0008
BEQ	T6,R0,800A07C8	;if not set, set it
ORI	T1,V1,0008	;T1=pause bit set
AND	T7,V1,AT		;T7=switch unset
SW	T7,028C (A0)	;save switch
//800A0798:	advance and quit
LW	A1,0000 (A2)
SW	A2,001C (SP)
JAL	8009DC04		;advance
SW	A0,0018 (SP)
LW	A2,001C (SP)
LW	A0,0018 (SP)
LW	T8,0000 (A2)
ADDU	T9,T8,V0
SW	T9,0000 (A2)
ADDIU	V0,R0,0001	;returns V0=1, which I'm not certain about
BEQ	R0,R0,800A07D8
SW	T9,02A0 (A0)	;save current position
//800A07C8:	set switch without advancing (paused)
SW	T1,028C (A0)	;save control switch
LW	T2,0000 (A2)
ADDIU	V0,R0,0002	;V0=2 (break text reading)
SW	T2,02A0 (A0)
LW	RA,0014 (SP)
ADDIU	SP,SP,0018
JR	RA
NOP

800A07E8	0x	7F05	font color
ADDIU	SP,SP,FFE0
SW	RA,001C (SP)
SW	A1,0024 (SP)	;save p->offset in text
LW	V0,01AC (A0)	;V0=controller+0x1AC - font# in use
ADDIU	A2,A0,0182	;A2=controller+0x182 (color list)
LW	T7,0024 (SP)
BLTZ	V0,800A081C	;if not stated, assume value#1
SLTI	AT,V0,0004	;true if 0-3
BEQ	AT,R0,800A081C
SLL	T6,V0,0x2	;value->offset
ADDU	A2,A0,T6		;A2=controller+offset
BEQ	R0,R0,800A081C
ADDIU	A2,A2,0182	;A2=one of four color values saved: red component
//800A081C:	
LW	A1,0000 (T7)	;A1=offset in text
ADDIU	T8,A2,0002	;T8=offset to blue component
SW	T8,0010 (SP)
SW	A0,0020 (SP)	;save txt controller
JAL	8009DEE8		;copy color values to target
ADDIU	A3,A2,0001	;A3=offset to green component
LW	T9,0024 (SP)
LW	A0,0020 (SP)
JAL	8009DC04		;get next entry offset
LW	A1,0000 (T9)
LW	V1,0024 (SP)
LW	T0,0000 (V1)
ADDU	T1,T0,V0
SW	T1,0000 (V1)
LW	RA,001C (SP)
OR	V0,R0,R0
JR	RA
ADDIU	SP,SP,0020

800A0864	0x	7F06
ADDIU	SP,SP,FFE8
SW	RA,0014 (SP)
SW	A0,0018 (SP)
OR	A2,A1,R0
LW	A1,0000 (A2)
SW	A2,001C (SP)
JAL	8009DC04
LW	A0,0018 (SP)
LW	A2,001C (SP)
ADDIU	T8,R0,0001	;T8=1
LW	T6,0000 (A2)
ADDU	T7,T6,V0
SW	T7,0000 (A2)
LW	T9,0018 (SP)
OR	V0,R0,R0
SW	T8,02C0 (T9)	;1->controller+0x2C0
LW	RA,0014 (SP)
JR	RA
ADDIU	SP,SP,0018

800A08B0	0x	7F07
ADDIU	SP,SP,FFE8
SW	RA,0014 (SP)
OR	A2,A1,R0
LW	A1,0000 (A2)
SW	A2,001C (SP)
JAL	8009DC04
SW	A0,0018 (SP)
LW	A2,001C (SP)
LW	A0,0018 (SP)
LW	T6,0000 (A2)
ADDU	T7,T6,V0
SW	T7,0000 (A2)
SW	R0,02BC (A0)	;0->controller+0x2BC
SW	R0,02C0 (A0)	;0->controller+0x2C0
LW	RA,0014 (SP)
OR	V0,R0,R0
JR	RA
ADDIU	SP,SP,0018

800A08F8	0x	process 7F08-7F0C	animation types?
ADDIU	SP,SP,FFD8
SW	RA,0014 (SP)
SW	A0,0028 (SP)
SW	A1,002C (SP)
SW	A2,0030 (SP)	;bank value passed from command (0,4,5,6,9)
LW	T6,002C (SP)
LW	A0,0028 (SP)	;A0=p->text handler
ADDIU	A2,SP,0024	;A2=target for xx value
ADDIU	A3,SP,0022	;A3=target for animation value
JAL	8009DF90	;determine if valid command and retrieve command values
LW	A1,0000 (T6)	;A1=offset in text
//800A0924:
LW	A0,0030 (SP)	;A0=bank value passed from command
LW	A1,0024 (SP)	;A1=slot value
JAL	8007B44C
LHU	A2,0022 (SP)	;A2=animation value
//800A0934:	advance past command
LW	T7,002C (SP)
LW	A0,0028 (SP)
JAL	8009DC04
LW	A1,0000 (T7)
//800A0944:
LW	T8,002C (SP)
LW	T9,0000 (T8)
ADDU	T0,T9,V0
SW	T0,0000 (T8)
LW	RA,0014 (SP)
OR	V0,R0,R0
JR	RA
ADDIU	SP,SP,0028

	8007B44C	0x	save animation
	SW	A2,0008 (SP)	;save animation value
	ANDI	A2,A2,FFFF
	BLTZ	A0,8007B494
	SLTI	AT,A0,000A
	BEQ	AT,R0,8007B494	;command value must be 0-9
	NOP
	BLTZ	A1,8007B494
	SLTI	AT,A1,000A
	BEQ	AT,R0,8007B494	;xx value must be 0-9
	LUI	T6,8010
	//8007B474:
	LW	T6,4A70 (T6)	;T6=80104A70: [80139C40]
	SLL	T7,A0,0x2
	ADDU	T7,T7,A0
	SLL	T7,T7,0x2	;T7=command value * 0x14
	SLL	T9,A1,0x1	;T9=xx value->offset
	ADDU	T8,T6,T7	;T8=[80139C40]+bank offset
	ADDU	T0,T8,T9	;T0=base + bank offset + slot offset
	SH	A2,0010 (T0)	;save animation value to slot
	//8007B494:
	JR	RA
	NOP

800A0964	0x	7F08
ADDIU	SP,SP,FFE8
SW	RA,0014 (SP)
JAL	800A08F8
OR	A2,R0,R0
LW	RA,0014 (SP)
ADDIU	SP,SP,0018
JR	RA
NOP

800A0984	0x	7F09
ADDIU	SP,SP,FFE8
SW	RA,0014 (SP)
JAL	800A08F8
ADDIU	A2,R0,0004
LW	RA,0014 (SP)
ADDIU	SP,SP,0018
JR	RA
NOP

800A09A4	0x	7F0A
ADDIU	SP,SP,FFE8
SW	RA,0014 (SP)
JAL	800A08F8
ADDIU	A2,R0,0005
LW	RA,0014 (SP)
ADDIU	SP,SP,0018
JR	RA
NOP

800A09C4	0x	7F0B
ADDIU	SP,SP,FFE8
SW	RA,0014 (SP)
JAL	800A08F8
ADDIU	A2,R0,0006
LW	RA,0014 (SP)
ADDIU	SP,SP,0018
JR	RA
NOP

800A09E4	0x	7F0C
ADDIU	SP,SP,FFE8
SW	RA,0014 (SP)
JAL	800A08F8
ADDIU	A2,R0,0009
LW	RA,0014 (SP)
ADDIU	SP,SP,0018
JR	RA
NOP

800A0A04	0x	7F0D
ADDIU	SP,SP,FFE8
SW	RA,0014 (SP)
OR	A3,A0,R0
OR	A2,A1,R0
LW	A1,0000 (A2)
SW	A3,0018 (SP)
SW	A2,001C (SP)
JAL	8009DC04
OR	A0,A3,R0
LW	A2,001C (SP)
LW	A3,0018 (SP)
ADDIU	A1,R0,0001
LW	T6,0000 (A2)
ADDIU	A0,A3,01B0
ADDU	T7,T6,V0
SW	T7,0000 (A2)
JAL	80065158
SW	T7,02A0 (A3)
ADDIU	V0,R0,0002
LW	RA,0014 (SP)
ADDIU	SP,SP,0018
JR	RA
NOP

800A0A60	0x	used by 7F0F-7F12
ADDIU	SP,SP,FFD8
SW	S0,0018 (SP)
OR	S0,A1,R0
SW	RA,001C (SP)
SW	A0,0028 (SP)
SW	A2,0030 (SP)	;unique value passed by each command
LW	T6,0028 (SP)
LW	T7,000C (T6)
ADDIU	T8,T7,0010
JAL	80065040
SW	T8,0020 (SP)
JAL	800654FC
OR	A0,V0,R0
//800A0A94:
LW	A1,0000 (S0)
LW	T9,0020 (SP)
LW	A2,0030 (SP)	;A2=00FF-0003
ADDIU	AT,R0,00FF
ADDU	V1,A1,T9
LBU	A0,0002 (V1)
LBU	T1,0003 (V1)
SLL	A0,A0,0x8
OR	A0,T1,A0	;A0=command's text#
BEQ	A2,AT,800A0AC4	
ANDI	A0,A0,FFFF	;A0=just the number, no extra goodies
BNE	A2,V0,800A0AEC
//800A0AC4:
ORI	AT,R0,FFFF	;AT=-1
BEQ	A0,AT,800A0AE0
OR	A1,A0,R0	;A1=text#
JAL	8009DBA4
LW	A0,0028 (SP)
BEQ	R0,R0,800A0AEC
LW	A1,0000 (S0)
//800A0AE0:	invalid text #
JAL	8009E9A4
LW	A0,0028 (SP)
LW	A1,0000 (S0)
//800A0AEC:	set new position
JAL	8009DC04	;get command size
LW	A0,0028 (SP)
LW	T2,0000 (S0)
ADDU	T3,T2,V0
SW	T3,0000 (S0)	;move to next character or command
//800A0B00:
LW	RA,001C (SP)	;Bail!
OR	V0,R0,R0
LW	S0,0018 (SP)
JR	RA
ADDIU	SP,SP,0028

800A0B14	0x	7F0E
ADDIU	SP,SP,FFE8
SW	RA,0014 (SP)
JAL	800A0A60
ADDIU	A2,R0,00FF
LW	RA,0014 (SP)
ADDIU	SP,SP,0018
JR	RA
NOP

800A0B34	0x	7F0F
ADDIU	SP,SP,FFE8
SW	RA,0014 (SP)
JAL	800A0A60
OR	A2,R0,R0
LW	RA,0014 (SP)
ADDIU	SP,SP,0018
JR	RA
NOP

800A0B54	0x	7F10
ADDIU	SP,SP,FFE8
SW	RA,0014 (SP)
JAL	800A0A60
ADDIU	A2,R0,0001
LW	RA,0014 (SP)
ADDIU	SP,SP,0018
JR	RA
NOP

800A0B74	0x	7F11
ADDIU	SP,SP,FFE8
SW	RA,0014 (SP)
JAL	800A0A60
ADDIU	A2,R0,0002
LW	RA,0014 (SP)
ADDIU	SP,SP,0018
JR	RA
NOP

800A0B94	0x	7F12
ADDIU	SP,SP,FFE8
SW	RA,0014 (SP)
JAL	800A0A60
ADDIU	A2,R0,0003
LW	RA,0014 (SP)
ADDIU	SP,SP,0018
JR	RA
NOP

800A0BB4	0x	process response command types 7F13-7F15
ADDIU	SP,SP,FFB8
SW	S1,0018 (SP)
SW	S0,0014 (SP)
OR	S0,A1,R0
OR	S1,A2,R0
SW	RA,001C (SP)
SW	A0,0048 (SP)
LW	T6,0048 (SP)
SLL	A1,S1,0x10
SRA	A1,A1,0x10
LW	A3,000C (T6)
OR	A0,R0,R0
ADDIU	A3,A3,0010
JAL	80099FE8
SW	A3,003C (SP)
LW	A3,003C (SP)
OR	T1,V0,R0
BLEZ	S1,800A0D3C
OR	A1,R0,R0
ANDI	T0,S1,0003
BEQ	T0,R0,800A0C5C
OR	A2,T0,R0
SLL	A0,R0,0x1
ADDIU	T7,SP,0040
ADDU	V1,A0,T7
LW	T8,0000 (S0)
ADDIU	A1,A1,0001
ADDIU	V1,V1,0002
ADDU	T9,T8,A0
ADDU	T2,T9,A3
LBU	T3,0002 (T2)
SLL	T2,T3,0x8
SH	T2,FFFE (V1)
LW	T5,0000 (S0)
ADDU	T6,T5,A0
ADDU	T7,T6,A3
LBU	T9,0003 (T7)
ADDIU	A0,A0,0002
OR	T3,T9,T2
BNE	A2,A1,800A0C18
SH	T3,FFFE (V1)
BEQ	A1,S1,800A0D3C
ADDIU	T4,SP,0040
SLL	A0,A1,0x1
SLL	T5,S1,0x1
ADDU	A2,T5,T4
ADDU	V1,A0,T4
LW	T6,0000 (S0)
ADDIU	V1,V1,0008
ADDU	T7,T6,A0
ADDU	T8,T7,A3
LBU	T9,0002 (T8)
SLL	T8,T9,0x8
SH	T8,FFF8 (V1)
LW	T3,0000 (S0)
ADDU	T5,T3,A0
ADDU	T4,T5,A3
LBU	T7,0003 (T4)
OR	T9,T7,T8
SH	T9,FFF8 (V1)
LW	T2,0000 (S0)
ADDU	T3,T2,A0
ADDU	T5,T3,A3
LBU	T4,0004 (T5)
SLL	T5,T4,0x8
SH	T5,FFFA (V1)
LW	T7,0000 (S0)
ADDU	T8,T7,A0
ADDU	T9,T8,A3
LBU	T3,0005 (T9)
OR	T4,T3,T5
SH	T4,FFFA (V1)
LW	T6,0000 (S0)
ADDU	T7,T6,A0
ADDU	T8,T7,A3
LBU	T9,0006 (T8)
SLL	T8,T9,0x8
SH	T8,FFFC (V1)
LW	T3,0000 (S0)
ADDU	T5,T3,A0
ADDU	T4,T5,A3
LBU	T7,0007 (T4)
OR	T9,T7,T8
SH	T9,FFFC (V1)
LW	T2,0000 (S0)
ADDU	T3,T2,A0
ADDU	T5,T3,A3
LBU	T4,0008 (T5)
SLL	T5,T4,0x8
SH	T5,FFFE (V1)
LW	T7,0000 (S0)
ADDU	T8,T7,A0
ADDU	T9,T8,A3
LBU	T3,0009 (T9)
ADDIU	A0,A0,0008
OR	T4,T3,T5
BNE	V1,A2,800A0C70
SH	T4,FFFE (V1)
BLTZ	V0,800A0D50
LW	A0,0048 (SP)
SLT	AT,V0,S1
BNEL	AT,R0,800A0D58
SLL	T6,T1,0x1
OR	T1,R0,R0
SLL	T6,T1,0x1
ADDU	A1,SP,T6
JAL	8009DBA4
LHU	A1,0040 (A1)
LW	A0,0048 (SP)
JAL	8009DC04
LW	A1,0000 (S0)
LW	T7,0000 (S0)
ADDU	T8,T7,V0
SW	T8,0000 (S0)
OR	V0,R0,R0
LW	RA,001C (SP)
LW	S0,0014 (SP)
LW	S1,0018 (SP)
JR	RA
ADDIU	SP,SP,0048

800A0D94	0x	7F13	rand2
ADDIU	SP,SP,FFE8
SW	RA,0014 (SP)
JAL	800A0BB4
ADDIU	A2,R0,0002
LW	RA,0014 (SP)
ADDIU	SP,SP,0018
JR	RA
NOP

800A0DB4	0x	7F14	rand3
ADDIU	SP,SP,FFE8
SW	RA,0014 (SP)
JAL	800A0BB4
ADDIU	A2,R0,0003
LW	RA,0014 (SP)
ADDIU	SP,SP,0018
JR	RA
NOP

800A0DD4	0x	7F15	rand4
ADDIU	SP,SP,FFE8
SW	RA,0014 (SP)
JAL	800A0BB4
ADDIU	A2,R0,0004
LW	RA,0014 (SP)
ADDIU	SP,SP,0018
JR	RA
NOP

800A0DF4	0x	process menu types 7F16-7F18
ADDIU	SP,SP,FF78
SW	S5,0040 (SP)
SW	S4,003C (SP)
OR	S4,A2,R0
OR	S5,A1,R0
SW	RA,0044 (SP)
SW	S3,0038 (SP)
SW	S2,0034 (SP)
SW	S1,0030 (SP)
SW	S0,002C (SP)
SW	A0,0088 (SP)
LW	T6,0088 (SP)
LW	A3,000C (T6)
ADDIU	A3,A3,0010
LW	T7,0000 (S5)
SLTI	AT,S4,0003
ADDU	V1,T7,A3
LBU	V0,0002 (V1)
LBU	T9,0003 (V1)
SLL	V0,V0,0x8
OR	V0,T9,V0
ANDI	V0,V0,FFFF
SW	V0,0074 (SP)
LW	T0,0000 (S5)
ADDU	V1,T0,A3
LBU	V0,0004 (V1)
LBU	T2,0005 (V1)
SLL	V0,V0,0x8
OR	V0,T2,V0
ANDI	V0,V0,FFFF
BNEZ	AT,800A0E94
SW	V0,0078 (SP)
LW	T3,0000 (S5)
ADDU	V1,T3,A3
LBU	V0,0006 (V1)
LBU	T5,0007 (V1)
SLL	V0,V0,0x8
OR	V0,T5,V0
ANDI	V0,V0,FFFF
SW	V0,007C (SP)
SLTI	AT,S4,0004
BNEL	AT,R0,800A0EC4
SLTI	AT,S4,0002
LW	T6,0000 (S5)
ADDU	V1,T6,A3
LBU	V0,0008 (V1)
LBU	T8,0009 (V1)
SLL	V0,V0,0x8
OR	V0,T8,V0
ANDI	V0,V0,FFFF
SW	V0,0080 (SP)
SLTI	AT,S4,0002
BNEZ	AT,800A0F64
SLTI	AT,S4,0005
BEQ	AT,R0,800A0F64
LW	T9,0088 (SP)
BLEZ	S4,800A0F18
LW	S2,0020 (T9)
LUI	S1,8014
ADDIU	S0,SP,0074
SLL	T1,S4,0x2
ADDU	S3,T1,S0
ADDIU	S1,S1,2700
JAL	80065040
NOP
OR	A0,V0,R0
OR	A1,S1,R0
LW	A2,0000 (S0)
JAL	80065D90
OR	A3,S2,R0
ADDIU	S0,S0,0004
BNE	S0,S3,800A0EF0
ADDU	S1,A2,S1
JAL	80065040
NOP
OR	T3,R0,R0
OR	T4,R0,R0
LUI	A1,8014
ADDIU	A1,A1,25C0
LW	A2,0074 (SP)
LW	T2,0078 (SP)
SLTI	AT,S4,0003
BEQL	AT,R0,800A0F44
LW	T3,007C (SP)
SLTI	AT,S4,0004
BEQL	AT,R0,800A0F50
LW	T4,0080 (SP)
SW	S4,007C (A1)
SW	T4,0068 (A1)
SW	T3,0064 (A1)
SW	T2,0060 (A1)
SW	A2,005C (A1)
LW	A0,0088 (SP)
JAL	8009DC04
LW	A1,0000 (S5)
LW	T5,0000 (S5)
ADDU	T6,T5,V0
SW	T6,0000 (S5)
OR	V0,R0,R0
LW	RA,0044 (SP)
LW	S0,002C (SP)
LW	S1,0030 (SP)
LW	S2,0034 (SP)
LW	S3,0038 (SP)
LW	S4,003C (SP)
LW	S5,0040 (SP)
JR	RA
ADDIU	SP,SP,0088

800A0FA4	0x	this area now accounted for

800A0FCC	0x	7F16	menu2
ADDIU	SP,SP,FFE8
SW	RA,0014 (SP)
JAL	800A0DF4
ADDIU	A2,R0,0002
LW	RA,0014 (SP)
ADDIU	SP,SP,0018
JR	RA
NOP

800A0FEC	0x	7F17	menu3
ADDIU	SP,SP,FFE8
SW	RA,0014 (SP)
JAL	800A0DF4
ADDIU	A2,R0,0003
LW	RA,0014 (SP)
ADDIU	SP,SP,0018
JR	RA
NOP

800A100C	0x	7F18	menu4
ADDIU	SP,SP,FFE8
SW	RA,0014 (SP)
JAL	800A0DF4
ADDIU	A2,R0,0004
LW	RA,0014 (SP)
ADDIU	SP,SP,0018
JR	RA
NOP

800A102C	0x	7F19
ADDIU	SP,SP,FFE8
SW	RA,0014 (SP)
SW	A0,0018 (SP)
OR	A2,A1,R0
LW	A1,0000 (A2)
SW	A2,001C (SP)
JAL	8009DC04
LW	A0,0018 (SP)
LW	A2,001C (SP)
LW	T6,0000 (A2)
ADDU	T7,T6,V0
SW	T7,0000 (A2)
JAL	8009E9C0
LW	A0,0018 (SP)
OR	V0,R0,R0
LW	RA,0014 (SP)
ADDIU	SP,SP,0018
JR	RA
NOP

800A1078	0x	7F1A
ADDIU	SP,SP,FFD8
SW	RA,0014 (SP)
SW	A1,002C (SP)
OR	A3,A0,R0
LW	V1,000C (A3)
LW	A1,002C (SP)
ADDIU	A0,V1,0010
LW	A2,0008 (V1)
SW	A0,001C (SP)
JAL	8009EBB0
SW	V1,0024 (SP)
LW	V1,0024 (SP)
LW	A0,001C (SP)
OR	A2,V0,R0
SW	V0,0008 (V1)
LW	T6,002C (SP)
JAL	8009EC88
LW	A1,0000 (T6)
LW	V1,0024 (SP)
SW	V0,0008 (V1)
LW	RA,0014 (SP)
OR	V0,R0,R0
JR	RA
ADDIU	SP,SP,0028

800A10D8	0x	7F1B
ADDIU	SP,SP,FFE8
SW	RA,0014 (SP)
SW	A0,0018 (SP)
SW	A1,001C (SP)
LW	T6,0018 (SP)
LW	T7,001C (SP)
LW	V0,000C (T6)
LW	A0,0020 (T6)
LW	A2,0000 (T7)
ADDIU	A1,V0,0010
JAL	8009ED14
LW	A3,0008 (V0)
LW	T8,0018 (SP)
LW	T9,000C (T8)
SW	V0,0008 (T9)
LW	RA,0014 (SP)
OR	V0,R0,R0
JR	RA
ADDIU	SP,SP,0018

800A1124	0x	7F1C	inserts animal's signature sound
ADDIU	SP,SP,FFE8
SW	RA,0014 (SP)
SW	A0,0018 (SP)
SW	A1,001C (SP)
LW	T6,0018 (SP)
LW	T7,001C (SP)	;T7=p->curpos
LW	V0,000C (T6)	;V0=p->txt bank handle
LW	A0,0020 (T6)	;A0=[80276410]
LW	A2,0000 (T7)	;A2=curpos
ADDIU	A1,V0,0010	;A1=p->text bank
JAL	8009EDBC
LW	A3,0008 (V0)	;A3=size of bank
LW	T8,0018 (SP)
LW	T9,000C (T8)
SW	V0,0008 (T9)
LW	RA,0014 (SP)
OR	V0,R0,R0
JR	RA
ADDIU	SP,SP,0018

	8009EDBC:
	ADDIU	SP,SP,FFD0
	SW	RA,001C (SP)
	SW	A0,0030 (SP)
	SW	A1,0034 (SP)
	SW	A2,0038 (SP)
	SW	A3,003C (SP)
	LW	A0,0034 (SP)
	JAL	800903A8	;ret V0=command size
	LW	A1,0038 (SP)
	//8009EDE0:
	LW	A0,0030 (SP)	;A0=p->region following the last loaded rom data chunk
	SW	V0,002C (SP)	;save command size
	BEQL	A0,R0,8009EE08
	SW	R0,0028 (SP)
	JAL	800A9E7C	;pulls ?name? from saveslot?
	NOP
	SW	V0,0028 (SP)	;save p->text
	BEQ	R0,R0,8009EE08
	LW	A0,0030 (SP)
	-SW	R0,0028 (SP)
	//8009EE08:
	BEQ	A0,R0,8009EE20
	ADDIU	A1,R0,0004	;max strlen=4	this limits sound words to 4 chars!
	JAL	8009E8D0	;right-align text
	LW	A0,0028 (SP)
	BEQ	R0,R0,8009EE24
	SW	V0,0024 (SP)	;SP+24=p->string
	//8009EE20:
	SW	R0,0024 (SP)
	LW	V0,0038 (SP)
	LW	T6,0024 (SP)
	LW	T7,002C (SP)
	LW	A0,0034 (SP)
	LW	A3,003C (SP)
	SW	R0,0010 (SP)
	ADDU	A1,V0,T6
	JAL	8009EA2C	;extend text bank for insertion
	ADDU	A2,V0,T7
	//8009EE48:
	LW	T8,0034 (SP)
	LW	T9,0038 (SP)
	SW	V0,0020 (SP)
	LW	A1,0028 (SP)
	LW	A2,0024 (SP)
	JAL	8009EB44	;copy source to destination
	ADDU	A0,T8,T9
	//8009EE64:	wrap things up
	LW	V0,0020 (SP)
	LW	RA,001C (SP)
	ADDIU	SP,SP,0030
	JR	RA
	NOP
	
	800A9E7C:
	LBU	T6,0002 (A0)	;T6=index	A0=[80276410]
	SLTU	V0,R0,A0	;V0=1 always, since A0=pointer, right?
	OR	A1,R0,R0	;A1=0
	XORI	T7,T6,0003	;T7=index w/ last two bits cleared...
	SLTIU	T7,T7,0001	;T7=1 if index was 3
	AND	T8,V0,T7	;T8=1 if index was 3 and a pointer was used
	BEQ	T8,R0,800A9EA4	
	LUI	V1,8011
	BEQ	R0,R0,800A9EA4
	LW	A1,0174 (A0)	;A1=[80276584]: [801312E0]
	//800A9EA4:
	BEQ	V0,R0,800A9EBC
	ADDIU	V1,V1,B818	;V1=8010B818: 
	BEQ	A1,R0,800A9EBC
	NOP
	BEQ	R0,R0,800A9EBC
	ADDIU	V1,A1,04E5	;V1=04E5+[801312E0]
	//800A9EBC:
	OR	V0,V1,R0	;return V0=?
	JR	RA
	NOP
	

800A1170	0x	7F1D	year
ADDIU	SP,SP,FFE8
SW	RA,0014 (SP)
SW	A0,0018 (SP)
OR	A3,A1,R0
LW	T6,0018 (SP)
LW	A1,0000 (A3)
LW	V0,000C (T6)
ADDIU	A0,V0,0010
JAL	8009EE78
LW	A2,0008 (V0)
LW	T7,0018 (SP)
LW	T8,000C (T7)
SW	V0,0008 (T8)
LW	RA,0014 (SP)
OR	V0,R0,R0
JR	RA
ADDIU	SP,SP,0018

800A11B4	0x	7F1E	month
ADDIU	SP,SP,FFE8
SW	RA,0014 (SP)
SW	A0,0018 (SP)
OR	A3,A1,R0
LW	T6,0018 (SP)
LW	A1,0000 (A3)
LW	V0,000C (T6)
ADDIU	A0,V0,0010
JAL	8009EF00
LW	A2,0008 (V0)
LW	T7,0018 (SP)
LW	T8,000C (T7)
SW	V0,0008 (T8)
LW	RA,0014 (SP)
OR	V0,R0,R0
JR	RA
ADDIU	SP,SP,0018

800A11F8	0x	7F1F	day of week
ADDIU	SP,SP,FFE8
SW	RA,0014 (SP)
SW	A0,0018 (SP)
OR	A3,A1,R0
LW	T6,0018 (SP)
LW	A1,0000 (A3)
LW	V0,000C (T6)
ADDIU	A0,V0,0010
JAL	8009EF88
LW	A2,0008 (V0)
LW	T7,0018 (SP)
LW	T8,000C (T7)
SW	V0,0008 (T8)
LW	RA,0014 (SP)
OR	V0,R0,R0
JR	RA
ADDIU	SP,SP,0018

800A123C	0x	7F20	day month
ADDIU	SP,SP,FFE8
SW	RA,0014 (SP)
SW	A0,0018 (SP)
OR	A3,A1,R0
LW	T6,0018 (SP)
LW	A1,0000 (A3)
LW	V0,000C (T6)
ADDIU	A0,V0,0010
JAL	8009F010
LW	A2,0008 (V0)
LW	T7,0018 (SP)
LW	T8,000C (T7)
SW	V0,0008 (T8)
LW	RA,0014 (SP)
OR	V0,R0,R0
JR	RA
ADDIU	SP,SP,0018

800A1280	0x	7F21	hours
ADDIU	SP,SP,FFE8
SW	RA,0014 (SP)
SW	A0,0018 (SP)
OR	A3,A1,R0
LW	T6,0018 (SP)
LW	A1,0000 (A3)
LW	V0,000C (T6)
ADDIU	A0,V0,0010
JAL	8009F098
LW	A2,0008 (V0)
LW	T7,0018 (SP)
LW	T8,000C (T7)
SW	V0,0008 (T8)
LW	RA,0014 (SP)
OR	V0,R0,R0
JR	RA
ADDIU	SP,SP,0018

800A12C4	0x	7F22	minutes
ADDIU	SP,SP,FFE8
SW	RA,0014 (SP)
SW	A0,0018 (SP)
OR	A3,A1,R0
LW	T6,0018 (SP)
LW	A1,0000 (A3)
LW	V0,000C (T6)
ADDIU	A0,V0,0010
JAL	8009F120
LW	A2,0008 (V0)
LW	T7,0018 (SP)
LW	T8,000C (T7)
SW	V0,0008 (T8)
LW	RA,0014 (SP)
OR	V0,R0,R0
JR	RA
ADDIU	SP,SP,0018

800A1308	0x	7F23	seconds
ADDIU	SP,SP,FFE8
SW	RA,0014 (SP)
SW	A0,0018 (SP)
OR	A3,A1,R0
LW	T6,0018 (SP)
LW	A1,0000 (A3)
LW	V0,000C (T6)
ADDIU	A0,V0,0010
JAL	8009F1A8
LW	A2,0008 (V0)
LW	T7,0018 (SP)
LW	T8,000C (T7)
SW	V0,0008 (T8)
LW	RA,0014 (SP)
OR	V0,R0,R0
JR	RA
ADDIU	SP,SP,0018

800A134C	0x	used to insert string from table
	used by: 7F24,7F27,7F28,7F2A,7F2B,7F2C,7F2D,7F36,7F37,7F38,7F39,7F3A,7F3B,7F3C,7F3D,7F3E,7F3F
ADDIU	SP,SP,FFE0
SW	RA,001C (SP)
SW	A2,0028 (SP)	;save slot#
OR	A3,A1,R0	;A3=curpos in msg_txt
LW	V0,000C (A0)	;V0=msg_txt bank[80141FF0]
LW	A1,0028 (SP)	;A1=slot #
LW	V1,0008 (V0)	;V1=sizeof msg_txt
SW	A0,0020 (SP)	;save text controller
ADDIU	A2,V0,0010	;A2=p->msg_txt
JAL	8009F230
SW	V1,0010 (SP)	;save sizeof msg_txt
LW	A0,0020 (SP)	;A0=text controller
LW	T6,000C (A0)	;T6=msg_txt bank[80141FF0]
SW	V0,0008 (T6)	;save new sizeof msg_txt
LW	RA,001C (SP)
OR	V0,R0,R0
JR	RA
ADDIU	SP,SP,0020

	8009F230:
	ADDIU	SP,SP,FFC8
	SW	RA,001C (SP)
	SW	A0,0038 (SP)	;save text controller
	SW	A1,003C (SP)	;A1=string# to recall, passed by calling command 0-13
	SW	A2,0040 (SP)	;save p->msg_txt
	SW	A3,0044 (SP)	;save curpos in msg_txt
	LW	T6,003C (SP)	;T6=slot#
	BLTZ	T6,8009F25C	;RESET value if < 0...
	SLTI	AT,T6,0014
	BNEL	AT,R0,8009F264	;...or > 13
	LW	A0,0040 (SP)	;A0=p->msg_txt
	//8009F25C:
	SW	R0,003C (SP)
	LW	A0,0040 (SP)
	//8009F264:
	JAL	800903A8	;advance past command
	LW	A1,0044 (SP)
	LW	T8,003C (SP)
	LW	T7,0038 (SP)	;T7=80142410
	SW	V0,0034 (SP)
	SLL	T9,T8,0x2
	ADDU	T9,T9,T8
	SLL	T9,T9,0x1	;T9=T8*0xA
	ADDU	A0,T7,T9
	ADDIU	A0,A0,0038	;80142448 + offset
	SW	A0,0024 (SP)
	JAL	8009E8D0	;RIGHT-ALIGN TEXT
	ADDIU	A1,R0,000A
	//8009F298:
	LW	V1,0044 (SP)
	LW	T0,0034 (SP)
	SW	V0,002C (SP)	;save true strlen
	LW	A0,0040 (SP)
	LW	A3,0048 (SP)
	SW	R0,0010 (SP)
	ADDU	A1,V1,V0
	JAL	8009EA2C	;extend text bank for entry
	ADDU	A2,V1,T0
	//8009F2BC:
	LW	T1,0040 (SP)
	LW	T2,0044 (SP)
	SW	V0,0028 (SP)
	LW	A1,0024 (SP)	;A1=p->source
	LW	A2,002C (SP)	;A2=strlen
	JAL	8009EB44	;copy string
	ADDU	A0,T1,T2	;A0=p->target
	//8009F2D8:
	LW	V0,0028 (SP)
	LW	RA,001C (SP)
	ADDIU	SP,SP,0038
	JR	RA
	NOP


800A1394	0x	display one of the variable strings; also has option for disable
ADDIU	SP,SP,FFD8
SW	RA,001C (SP)
SW	A0,0028 (SP)	;A0=80142410: text controller
SW	A1,002C (SP)	;A1=[801478F8]
SW	A2,0030 (SP)	;save slot # of preloaded text
SW	A3,0034 (SP)	;value ?	[1]
LW	T6,0034 (SP)	;T6=retrieved value
LW	T8,0030 (SP)	;T8=slot? value
LW	T7,0028 (SP)	;T7=text controller
BEQ	T6,R0,800A13F4	;if T6==0, then you don't insert text at all!
SLL	T9,T8,0x2
LW	V1,000C (T7)	;V1=p->msg_txt controller
ADDU	T9,T9,T8
SLL	T9,T9,0x1	;T9=slot? * 0xA	each string[10] is preloaded to bank by ASM
ADDU	A3,T7,T9	;A3=text controller + offset
LW	A2,0008 (V1)	;sizeof msg_txt
SW	T6,0010 (SP)
ADDIU	A3,A3,0038	;base for texty pre-loaded stuff is controller + 38 (80142448)
LW	A1,002C (SP)
SW	V1,0024 (SP)
JAL	8009F2EC	;right-aligns text, in some kind of copy routine. 
ADDIU	A0,V1,0010
LW	V1,0024 (SP)
SW	V0,0008 (V1)
//800A13F4:	move to next command
LW	T0,002C (SP)
LW	A0,0028 (SP)
LW	A2,0030 (SP)
JAL	800A134C	;probably inserts string or something
LW	A1,0000 (T0)
OR	V0,R0,R0
LW	RA,001C (SP)
ADDIU	SP,SP,0028
JR	RA
NOP

800A141C	0x	7F24
ADDIU	SP,SP,FFE8
SW	RA,0014 (SP)
OR	A3,A1,R0
LW	A1,0000 (A3)
JAL	800A134C
OR	A2,R0,R0
LW	RA,0014 (SP)
ADDIU	SP,SP,0018
JR	RA
NOP

800A1444	0x	7F25
ADDIU	SP,SP,FFE8
SW	RA,0014 (SP)
ADDIU	A2,R0,0001
JAL	800A1394
LBU	A3,0280 (A0)
LW	RA,0014 (SP)
ADDIU	SP,SP,0018
JR	RA
NOP

800A1468	0x	7F26
ADDIU	SP,SP,FFE8
SW	RA,0014 (SP)
ADDIU	A2,R0,0002
JAL	800A1394
LBU	A3,0281 (A0)
LW	RA,0014 (SP)
ADDIU	SP,SP,0018
JR	RA
NOP

800A148C	0x	7F27	recall string from 80142466
ADDIU	SP,SP,FFE8
SW	RA,0014 (SP)
OR	A3,A1,R0
LW	A1,0000 (A3)	;A1=position in msg_txt
JAL	800A134C
ADDIU	A2,R0,0003	;slot 3
LW	RA,0014 (SP)
ADDIU	SP,SP,0018
JR	RA
NOP

800A14B4	0x	7F28	recall string from 80142470
ADDIU	SP,SP,FFE8
SW	RA,0014 (SP)
OR	A3,A1,R0
LW	A1,0000 (A3)
JAL	800A134C
ADDIU	A2,R0,0004
LW	RA,0014 (SP)
ADDIU	SP,SP,0018
JR	RA
NOP

800A14DC	0x	7F29	recall string (actor) from 8014247A
ADDIU	SP,SP,FFE8
SW	RA,0014 (SP)
ADDIU	A2,R0,0005
JAL	800A1394
LBU	A3,0282 (A0)	;A3=80142692: [1]
LW	RA,0014 (SP)
ADDIU	SP,SP,0018
JR	RA
NOP

800A1500	0x	7F2A
ADDIU	SP,SP,FFE8
SW	RA,0014 (SP)
OR	A3,A1,R0
LW	A1,0000 (A3)
JAL	800A134C
ADDIU	A2,R0,0006
LW	RA,0014 (SP)
ADDIU	SP,SP,0018
JR	RA
NOP

800A1528	0x	7F2B
ADDIU	SP,SP,FFE8
SW	RA,0014 (SP)
OR	A3,A1,R0
LW	A1,0000 (A3)
JAL	800A134C
ADDIU	A2,R0,0007
LW	RA,0014 (SP)
ADDIU	SP,SP,0018
JR	RA
NOP

800A1550	0x	7F2C
ADDIU	SP,SP,FFE8
SW	RA,0014 (SP)
OR	A3,A1,R0
LW	A1,0000 (A3)
JAL	800A134C
ADDIU	A2,R0,0008
LW	RA,0014 (SP)
ADDIU	SP,SP,0018
JR	RA
NOP

800A1578	0x	7F2D
ADDIU	SP,SP,FFE8
SW	RA,0014 (SP)
OR	A3,A1,R0
LW	A1,0000 (A3)
JAL	800A134C
ADDIU	A2,R0,0009
LW	RA,0014 (SP)
ADDIU	SP,SP,0018
JR	RA
NOP

800A15A0	0x	7F36
ADDIU	SP,SP,FFE8
SW	RA,0014 (SP)
OR	A3,A1,R0
LW	A1,0000 (A3)
JAL	800A134C
ADDIU	A2,R0,000A
LW	RA,0014 (SP)
ADDIU	SP,SP,0018
JR	RA
NOP

800A15C8	0x	7F37
ADDIU	SP,SP,FFE8
SW	RA,0014 (SP)
OR	A3,A1,R0
LW	A1,0000 (A3)
JAL	800A134C
ADDIU	A2,R0,000B
LW	RA,0014 (SP)
ADDIU	SP,SP,0018
JR	RA
NOP

800A15F0	0x	7F38
ADDIU	SP,SP,FFE8
SW	RA,0014 (SP)
OR	A3,A1,R0
LW	A1,0000 (A3)
JAL	800A134C
ADDIU	A2,R0,000C
LW	RA,0014 (SP)
ADDIU	SP,SP,0018
JR	RA
NOP

800A1618	0x	7F39
ADDIU	SP,SP,FFE8
SW	RA,0014 (SP)
OR	A3,A1,R0
LW	A1,0000 (A3)
JAL	800A134C
ADDIU	A2,R0,000D
LW	RA,0014 (SP)
ADDIU	SP,SP,0018
JR	RA
NOP

800A1640	0x	7F3A
ADDIU	SP,SP,FFE8
SW	RA,0014 (SP)
OR	A3,A1,R0
LW	A1,0000 (A3)
JAL	800A134C
ADDIU	A2,R0,000E
LW	RA,0014 (SP)
ADDIU	SP,SP,0018
JR	RA
NOP

800A1668	0x	7F3B
ADDIU	SP,SP,FFE8
SW	RA,0014 (SP)
OR	A3,A1,R0
LW	A1,0000 (A3)
JAL	800A134C
ADDIU	A2,R0,000F
LW	RA,0014 (SP)
ADDIU	SP,SP,0018
JR	RA
NOP

800A1690	0x	7F3C
ADDIU	SP,SP,FFE8
SW	RA,0014 (SP)
OR	A3,A1,R0
LW	A1,0000 (A3)
JAL	800A134C
ADDIU	A2,R0,0010
LW	RA,0014 (SP)
ADDIU	SP,SP,0018
JR	RA
NOP

800A16B8	0x	7F3D
ADDIU	SP,SP,FFE8
SW	RA,0014 (SP)
OR	A3,A1,R0
LW	A1,0000 (A3)
JAL	800A134C
ADDIU	A2,R0,0011
LW	RA,0014 (SP)
ADDIU	SP,SP,0018
JR	RA
NOP

800A16E0	0x	7F3E
ADDIU	SP,SP,FFE8
SW	RA,0014 (SP)
OR	A3,A1,R0
LW	A1,0000 (A3)
JAL	800A134C
ADDIU	A2,R0,0012
LW	RA,0014 (SP)
ADDIU	SP,SP,0018
JR	RA
NOP

800A1708	0x	7F3F
ADDIU	SP,SP,FFE8
SW	RA,0014 (SP)
OR	A3,A1,R0
LW	A1,0000 (A3)
JAL	800A134C
ADDIU	A2,R0,0013
LW	RA,0014 (SP)
ADDIU	SP,SP,0018
JR	RA
NOP

800A1730	0x	7F2E	insert last selectmenu option
ADDIU	SP,SP,FFE8
SW	RA,0014 (SP)
SW	A1,001C (SP)
LW	V0,000C (A0)
LW	T6,001C (SP)
LW	A3,0008 (V0)
LW	A2,0000 (T6)
SW	A0,0018 (SP)
JAL	8009F3A8
ADDIU	A1,V0,0010
LW	A0,0018 (SP)
LW	T7,000C (A0)
SW	V0,0008 (T7)
LW	RA,0014 (SP)
OR	V0,R0,R0
JR	RA
ADDIU	SP,SP,0018

	8009F3A8:
	ADDIU	SP,SP,FFD0
	SW	RA,001C (SP)
	SW	A0,0030 (SP)
	SW	A1,0034 (SP)
	SW	A2,0038 (SP)
	SW	A3,003C (SP)
	LW	A0,0034 (SP)
	JAL	800903A8	;get command size
	LW	A1,0038 (SP)
	LW	T6,0030 (SP)	;T6=80142410
	LW	T0,0038 (SP)
	LW	A0,0034 (SP)
	LW	V1,0228 (T6)	;V1=80142638: strlen of selected
	SW	R0,0010 (SP)
	LW	A3,003C (SP)
	ADDU	A2,T0,V0
	ADDU	A1,T0,V1
	JAL	8009EA2C
	SW	V1,0024 (SP)
	LW	T7,0034 (SP)
	LW	T8,0038 (SP)
	LW	A1,0030 (SP)	;A1=80142410
	SW	V0,0020 (SP)
	LW	A2,0024 (SP)
	ADDU	A0,T7,T8
	JAL	8009EB44
	ADDIU	A1,A1,021C	;A1=8014262C: buffer for selected text
	LW	V0,0020 (SP)
	LW	RA,001C (SP)
	ADDIU	SP,SP,0030
	JR	RA
	NOP


800A1774	0x	7F2F	insert town name
ADDIU	SP,SP,FFE8
SW	RA,0014 (SP)
SW	A0,0018 (SP)
OR	A3,A1,R0
LW	T6,0018 (SP)
LW	A1,0000 (A3)
LW	V0,000C (T6)
ADDIU	A0,V0,0010
JAL	8009F428
LW	A2,0008 (V0)
LW	T7,0018 (SP)
LW	T8,000C (T7)
SW	V0,0008 (T8)
LW	RA,0014 (SP)
OR	V0,R0,R0
JR	RA
ADDIU	SP,SP,0018

800A17B8	0x	7F30	display a number between 0-99
ADDIU	SP,SP,FFE8
SW	RA,0014 (SP)
SW	A0,0018 (SP)
OR	A3,A1,R0
LW	T6,0018 (SP)
LW	A1,0000 (A3)
LW	V0,000C (T6)
ADDIU	A0,V0,0010
JAL	8009F50C
LW	A2,0008 (V0)
LW	T7,0018 (SP)
LW	T8,000C (T7)
SW	V0,0008 (T8)
LW	RA,0014 (SP)
OR	V0,R0,R0
JR	RA
ADDIU	SP,SP,0018

8009F50C	0x	displays a random number 0-100?
	ADDIU	SP,SP,FFD0
	SW	RA,001C (SP)
	SW	A0,0030 (SP)
	SW	A1,0034 (SP)
	SW	A2,0038 (SP)
	LW	A0,0030 (SP)
	JAL	800903A8	;this just finds length of command
	LW	A1,0034 (SP)
	SW	V0,002C (SP)
	//8009F530:	generate random number
	OR	A0,R0,R0	;A0=short added to value
	JAL	80099FE8	;ret V0=#
	ADDIU	A1,R0,0064	;A1=short * value
	//8009F53C:
	ADDIU	AT,R0,0064
	DIV	V0,AT
	MFHI	A1
	ANDI	A1,A1,FFFF	;A1=# % 100
	ADDIU	A0,SP,0028	;A0=target for text
	ADDIU	A2,R0,0002	;A2=max strlen
	ADDIU	A3,R0,0001	;align left
	JAL	8009264C	;converts numeral into string
	SW	R0,0010 (SP)	;normal write
	//8009F560:
	LW	V1,0034 (SP)
	LW	T6,002C (SP)
	SW	V0,0024 (SP)
	LW	A0,0030 (SP)
	LW	A3,0038 (SP)
	SW	R0,0010 (SP)
	ADDU	A1,V1,V0
	JAL	8009EA2C	;extend text bank
	ADDU	A2,V1,T6
	//8009F584:
	LW	T7,0030 (SP)
	LW	T8,0034 (SP)
	SW	V0,0020 (SP)
	ADDIU	A1,SP,0028
	LW	A2,0024 (SP)
	JAL	8009EB44	;copy source to destination
	ADDU	A0,T7,T8
	//8009F5A0:
	LW	V0,0020 (SP)
	LW	RA,001C (SP)
	ADDIU	SP,SP,0030
	JR	RA
	NOP

800A17FC	0x	
ADDIU	SP,SP,FFE0
SW	RA,001C (SP)
SW	A2,0028 (SP)
OR	A3,A1,R0
LW	V0,000C (A0)
LW	A1,0028 (SP)
LW	V1,0008 (V0)
SW	A0,0020 (SP)
ADDIU	A2,V0,0010
JAL	8009F5B4	;inserts text from entries starting at text controller + 100 (80142210)
SW	V1,0010 (SP)
LW	A0,0020 (SP)
LW	T6,000C (A0)
SW	V0,0008 (T6)
LW	RA,001C (SP)
OR	V0,R0,R0
JR	RA
ADDIU	SP,SP,0020

800A1844	0x	7F31
ADDIU	SP,SP,FFE8
SW	RA,0014 (SP)
OR	A3,A1,R0
LW	A1,0000 (A3)
JAL	800A17FC
OR	A2,R0,R0
LW	RA,0014 (SP)
ADDIU	SP,SP,0018
JR	RA
NOP

800A186C	0x	7F32
ADDIU	SP,SP,FFE8
SW	RA,0014 (SP)
OR	A3,A1,R0
LW	A1,0000 (A3)
JAL	800A17FC
ADDIU	A2,R0,0001
LW	RA,0014 (SP)
ADDIU	SP,SP,0018
JR	RA
NOP

800A1894	0x	7F33
ADDIU	SP,SP,FFE8
SW	RA,0014 (SP)
OR	A3,A1,R0
LW	A1,0000 (A3)
JAL	800A17FC
ADDIU	A2,R0,0002
LW	RA,0014 (SP)
ADDIU	SP,SP,0018
JR	RA
NOP

800A18BC	0x	7F34
ADDIU	SP,SP,FFE8
SW	RA,0014 (SP)
OR	A3,A1,R0
LW	A1,0000 (A3)
JAL	800A17FC
ADDIU	A2,R0,0003
LW	RA,0014 (SP)
ADDIU	SP,SP,0018
JR	RA
NOP

800A18E4	0x	7F35
ADDIU	SP,SP,FFE8
SW	RA,0014 (SP)
OR	A3,A1,R0
LW	A1,0000 (A3)
JAL	800A17FC
ADDIU	A2,R0,0004
LW	RA,0014 (SP)
ADDIU	SP,SP,0018
JR	RA
NOP

800A190C	0x	
ADDIU	SP,SP,FFE0
SW	RA,001C (SP)
SW	A2,0028 (SP)
OR	A3,A1,R0
LW	V0,000C (A0)
LW	A1,0028 (SP)
LW	V1,0008 (V0)
SW	A0,0020 (SP)
ADDIU	A2,V0,0010
JAL	8009F670	;inserts string at text controller + 132
SW	V1,0010 (SP)
LW	A0,0020 (SP)
LW	T6,000C (A0)
SW	V0,0008 (T6)
LW	RA,001C (SP)
OR	V0,R0,R0
JR	RA
ADDIU	SP,SP,0020

800A1954	0x	7F40	only used by gyroid when retrieving a message; 
	pulls it from text controller +132, which is last possible string slot
ADDIU	SP,SP,FFE8
SW	RA,0014 (SP)
OR	A3,A1,R0
LW	A1,0000 (A3)
JAL	800A190C
OR	A2,R0,R0
LW	RA,0014 (SP)
ADDIU	SP,SP,0018
JR	RA
NOP

800A197C	0x	???; used by 41-4A
ADDIU	SP,SP,FFE8
SW	RA,0014 (SP)
SW	A2,0020 (SP)	;store passed value
OR	A3,A1,R0
LW	A1,0000 (A3)
JAL	8009DC04
SW	A3,001C (SP)
LW	A3,001C (SP)
LW	T6,0000 (A3)
ADDU	T7,T6,V0
SW	T7,0000 (A3)
JAL	8007B650	;stores A0->address @ 80104A70
LB	A0,0023 (SP)	;A0=1st byte of passed value
OR	V0,R0,R0
LW	RA,0014 (SP)
ADDIU	SP,SP,0018
JR	RA
NOP

800A19C4	0x	7F41
ADDIU	SP,SP,FFE8
SW	RA,0014 (SP)
JAL	800A197C
OR	A2,R0,R0
LW	RA,0014 (SP)
ADDIU	SP,SP,0018
JR	RA
NOP

800A19E4	0x	7F42
ADDIU	SP,SP,FFE8
SW	RA,0014 (SP)
JAL	800A197C
ADDIU	A2,R0,0001
LW	RA,0014 (SP)
ADDIU	SP,SP,0018
JR	RA
NOP

800A1A04	0x	7F43
ADDIU	SP,SP,FFE8
SW	RA,0014 (SP)
JAL	800A197C
ADDIU	A2,R0,0002
LW	RA,0014 (SP)
ADDIU	SP,SP,0018
JR	RA
NOP

800A1A24	0x	7F44
ADDIU	SP,SP,FFE8
SW	RA,0014 (SP)
JAL	800A197C
ADDIU	A2,R0,0003
LW	RA,0014 (SP)
ADDIU	SP,SP,0018
JR	RA
NOP

800A1A44	0x	7F45
ADDIU	SP,SP,FFE8
SW	RA,0014 (SP)
JAL	800A197C
ADDIU	A2,R0,0004
LW	RA,0014 (SP)
ADDIU	SP,SP,0018
JR	RA
NOP

800A1A64	0x	7F46
ADDIU	SP,SP,FFE8
SW	RA,0014 (SP)
JAL	800A197C
ADDIU	A2,R0,0005
LW	RA,0014 (SP)
ADDIU	SP,SP,0018
JR	RA
NOP

800A1A84	0x	7F47
ADDIU	SP,SP,FFE8
SW	RA,0014 (SP)
JAL	800A197C
ADDIU	A2,R0,0006
LW	RA,0014 (SP)
ADDIU	SP,SP,0018
JR	RA
NOP

800A1AA4	0x	7F48
ADDIU	SP,SP,FFE8
SW	RA,0014 (SP)
JAL	800A197C
ADDIU	A2,R0,0007
LW	RA,0014 (SP)
ADDIU	SP,SP,0018
JR	RA
NOP

800A1AC4	0x	7F49
ADDIU	SP,SP,FFE8
SW	RA,0014 (SP)
JAL	800A197C
ADDIU	A2,R0,0008
LW	RA,0014 (SP)
ADDIU	SP,SP,0018
JR	RA
NOP

800A1AE4	0x	7F4A
ADDIU	SP,SP,FFE8
SW	RA,0014 (SP)
JAL	800A197C
ADDIU	A2,R0,0009
LW	RA,0014 (SP)
ADDIU	SP,SP,0018
JR	RA
NOP

800A1B04	0x	???; used by 4B-4F
ADDIU	SP,SP,FFE8
SW	RA,0014 (SP)
SW	A2,0020 (SP)
OR	A3,A1,R0
LW	A1,0000 (A3)
JAL	8009DC04
SW	A3,001C (SP)
LW	A3,001C (SP)
LW	T6,0000 (A3)
ADDU	T7,T6,V0
SW	T7,0000 (A3)
JAL	8009FB2C	;stores A0->80113898, and 0 to 801138A0 and 801138A4
LBU	A0,0023 (SP)
OR	V0,R0,R0
LW	RA,0014 (SP)
ADDIU	SP,SP,0018
JR	RA
NOP

800A1B4C	0x	7F4B
ADDIU	SP,SP,FFE8
SW	RA,0014 (SP)
JAL	800A1B04
OR	A2,R0,R0
LW	RA,0014 (SP)
ADDIU	SP,SP,0018
JR	RA
NOP

800A1B6C	0x	7F4C
ADDIU	SP,SP,FFE8
SW	RA,0014 (SP)
JAL	800A1B04
ADDIU	A2,R0,0001
LW	RA,0014 (SP)
ADDIU	SP,SP,0018
JR	RA
NOP

800A1B8C	0x	7F4D
ADDIU	SP,SP,FFE8
SW	RA,0014 (SP)
JAL	800A1B04
ADDIU	A2,R0,0002
LW	RA,0014 (SP)
ADDIU	SP,SP,0018
JR	RA
NOP

800A1BAC	0x	7F4E
ADDIU	SP,SP,FFE8
SW	RA,0014 (SP)
JAL	800A1B04
ADDIU	A2,R0,0003
LW	RA,0014 (SP)
ADDIU	SP,SP,0018
JR	RA
NOP

800A1BCC	0x	7F4F
ADDIU	SP,SP,FFE8
SW	RA,0014 (SP)
JAL	800A1B04
ADDIU	A2,R0,0004
LW	RA,0014 (SP)
ADDIU	SP,SP,0018
JR	RA
NOP

800A1BEC	0x5016C	7F50	font color # characters
ADDIU	SP,SP,FFE8
SW	RA,0014 (SP)
OR	A2,A1,R0
LW	A1,0000 (A2)
JAL	8009DC04		;advance
SW	A2,001C (SP)
LW	A2,001C (SP)
LW	T6,0000 (A2)
ADDU	T7,T6,V0
SW	T7,0000 (A2)
LW	RA,0014 (SP)
OR	V0,R0,R0
JR	RA
ADDIU	SP,SP,0018

800A1C24	0x501A4	7F51
ADDIU	SP,SP,FFE8
SW	RA,0014 (SP)
OR	A2,A1,R0
LW	A1,0000 (A2)
SW	A2,001C (SP)
JAL	8009DFF4		;should always return V0=2...
SW	A0,0018 (SP)
LW	A0,0018 (SP)	;A0=txt controller
BEQ	V0,R0,800A1C60
LW	A2,001C (SP)	;A2=curpos
LW	T6,028C (A0)	;T6=some optionswitch
ADDIU	AT,R0,FFFE
AND	T7,T6,AT		;kill switch 0x1
BEQ	R0,R0,800A1C6C
SW	T7,028C (A0)	;save it back
//800A1C60:	can this happen? V0 should always be 2
LW	T8,028C (A0)
ORI	T9,T8,0001	;set switch 0x1
SW	T9,028C (A0)
//800A1C6C:
LW	A1,0000 (A2)
SW	A2,001C (SP)
JAL	8009DC04		;advance
SW	A0,0018 (SP)
LW	A2,001C (SP)
LW	A0,0018 (SP)
LW	T0,0000 (A2)
ADDU	T1,T0,V0
SW	T1,0000 (A2)
SW	T1,02A0 (A0)	;save curpos to controller+0x2A0?
LW	RA,0014 (SP)
OR	V0,R0,R0
JR	RA
ADDIU	SP,SP,0018

800A1CA4	0x50224	7F52
ADDIU	SP,SP,FFE8
SW	RA,0014 (SP)
OR	A2,A1,R0
LW	A1,0000 (A2)
JAL	8009DC04	;returns V0=size of command
SW	A2,001C (SP)
LW	A2,001C (SP)
LW	T6,0000 (A2)
ADDU	T7,T6,V0
SW	T7,0000 (A2)
LW	RA,0014 (SP)
OR	V0,R0,R0
JR	RA
ADDIU	SP,SP,0018

800A1CDC	0x5025C	7F53
ADDIU	SP,SP,FFE8
SW	RA,0014 (SP)
OR	A2,A1,R0
LW	A1,0000 (A2)
JAL	8009DC04
SW	A2,001C (SP)
LW	A2,001C (SP)
LW	T6,0000 (A2)
ADDU	T7,T6,V0
SW	T7,0000 (A2)
LW	RA,0014 (SP)
OR	V0,R0,R0
JR	RA
ADDIU	SP,SP,0018

800A1D14	0x50294	7F54
ADDIU	SP,SP,FFE8
SW	RA,0014 (SP)
OR	A2,A1,R0
LW	A1,0000 (A2)
JAL	8009DC04
SW	A2,001C (SP)
LW	A2,001C (SP)
LW	T6,0000 (A2)
ADDU	T7,T6,V0
SW	T7,0000 (A2)
LW	RA,0014 (SP)
OR	V0,R0,R0
JR	RA
ADDIU	SP,SP,0018

800A1D4C	0x502CC	7F55
ADDIU	SP,SP,FFE8
SW	RA,0014 (SP)
OR	A2,A1,R0
LW	V1,028C (A0)
ADDIU	AT,R0,FFF7
ANDI	T6,V1,0008
BEQ	T6,R0,800A1DB0
ORI	T3,V1,0008
AND	T7,V1,AT
SW	T7,028C (A0)
LW	A1,0000 (A2)
SW	A2,001C (SP)
JAL	8009DC04
SW	A0,0018 (SP)
LW	A2,001C (SP)
LW	A0,0018 (SP)
LW	T8,0000 (A2)
ADDU	T9,T8,V0
SW	T9,0000 (A2)
LW	T1,028C (A0)
ADDIU	V0,R0,0001
SW	T9,02A0 (A0)
ORI	T2,T1,0002
BEQ	R0,R0,800A1DC0
SW	T2,028C (A0)
SW	T3,028C (A0)
LW	T4,0000 (A2)
ADDIU	V0,R0,0002
SW	T4,02A0 (A0)
LW	RA,0014 (SP)
ADDIU	SP,SP,0018
JR	RA
NOP

800A1DD0	0x50350	7F56
ADDIU	SP,SP,FFD0
SW	S0,0018 (SP)
OR	S0,A1,R0
SW	RA,001C (SP)
SW	A0,0030 (SP)
LW	A0,0030 (SP)
LW	A1,0000 (S0)
ADDIU	A2,SP,002C
JAL	8009E084
ADDIU	A3,SP,0028
LW	A0,002C (SP)
JAL	8009FB54
LW	A1,0028 (SP)
LW	A0,0030 (SP)
JAL	8009DC04
LW	A1,0000 (S0)
LW	T6,0000 (S0)
ADDU	T7,T6,V0
SW	T7,0000 (S0)
LW	T9,0030 (SP)
OR	V0,R0,R0
SW	T7,02A0 (T9)
LW	RA,001C (SP)
LW	S0,0018 (SP)
JR	RA
ADDIU	SP,SP,0030

800A1E38	0x503B8	7F57
ADDIU	SP,SP,FFD0
SW	S0,0018 (SP)
OR	S0,A1,R0
SW	RA,001C (SP)
SW	A0,0030 (SP)
LW	A0,0030 (SP)
LW	A1,0000 (S0)
ADDIU	A2,SP,002C
JAL	8009E118
ADDIU	A3,SP,0028
LW	A0,002C (SP)
JAL	8009FBD8
LW	A1,0028 (SP)
LW	A0,0030 (SP)
JAL	8009DC04
LW	A1,0000 (S0)
LW	T6,0000 (S0)
ADDU	T7,T6,V0
SW	T7,0000 (S0)
LW	T9,0030 (SP)
OR	V0,R0,R0
SW	T7,02A0 (T9)
LW	RA,001C (SP)
LW	S0,0018 (SP)
JR	RA
ADDIU	SP,SP,0030

800A1EA0	0x50420	7F58
ADDIU	SP,SP,FFE8
SW	RA,0014 (SP)
OR	A2,A1,R0
LW	V1,028C (A0)
LW	T6,0000 (A2)
ANDI	T7,V1,0008
BEQ	T7,R0,800A1F00
SW	T6,02A0 (A0)
LW	A1,0000 (A2)
JAL	8009E17C
SW	A0,0018 (SP)
LW	A0,0018 (SP)
BLEZ	V0,800A1EDC
OR	V1,V0,R0
ADDIU	V1,V0,FFFF
LW	T0,028C (A0)
SLL	T8,V1,0x1
ADDIU	AT,R0,FFF7
ADDIU	T9,T8,0001
AND	T1,T0,AT
SH	T9,0270 (A0)
SW	T1,028C (A0)
BEQ	R0,R0,800A1F0C
ADDIU	V0,R0,0001
ORI	T2,V1,0008
SW	T2,028C (A0)
ADDIU	V0,R0,0002
LW	RA,0014 (SP)
ADDIU	SP,SP,0018
JR	RA
NOP

800A1F1C	0x5049C	7F59	sound effect
ADDIU	SP,SP,FFD8
SW	S0,0018 (SP)
OR	S0,A1,R0
SW	RA,001C (SP)
SW	A0,0028 (SP)
LW	A0,0028 (SP)
LW	A1,0000 (S0)
JAL	8009E264
ADDIU	A2,SP,0024
JAL	8009FC2C
LW	A0,0024 (SP)
LW	A0,0028 (SP)
JAL	8009DC04
LW	A1,0000 (S0)
LW	T6,0000 (S0)
ADDU	T7,T6,V0
SW	T7,0000 (S0)
LW	T9,0028 (SP)
OR	V0,R0,R0
SW	T7,02A0 (T9)
LW	RA,001C (SP)
LW	S0,0018 (SP)
JR	RA
ADDIU	SP,SP,0028

800A1F7C	0x504FC	7F5A	font size
ADDIU	SP,SP,FFE8
SW	RA,0014 (SP)
OR	A2,A1,R0
LW	A1,0000 (A2)
JAL	8009DC04		;advance
SW	A2,001C (SP)
LW	A2,001C (SP)
LW	T6,0000 (A2)
ADDU	T7,T6,V0
SW	T7,0000 (A2)
LW	RA,0014 (SP)
OR	V0,R0,R0
JR	RA
ADDIU	SP,SP,0018

800A1FB4	0x50534	7F5B	open most recent letter to character
ADDIU	SP,SP,FFE8
SW	RA,0014 (SP)
OR	A2,A1,R0
LW	A1,0000 (A2)
SW	A2,001C (SP)
JAL	8009DC04
SW	A0,0018 (SP)
LW	A2,001C (SP)
LW	A0,0018 (SP)
LW	T6,0000 (A2)
ADDU	T7,T6,V0
SW	T7,0000 (A2)
LW	T8,028C (A0)
OR	V0,R0,R0
ORI	T9,T8,0002
SW	T9,028C (A0)	;set text control switch 0x2
LW	RA,0014 (SP)
JR	RA
ADDIU	SP,SP,0018

800A2000	0x50580	7F5C
ADDIU	SP,SP,FFE8
SW	RA,0014 (SP)
SW	A0,0018 (SP)
OR	A2,A1,R0
LW	A1,0000 (A2)
SW	A2,001C (SP)
JAL	8009DC04
LW	A0,0018 (SP)
LW	A2,001C (SP)
LW	T6,0000 (A2)
ADDU	T7,T6,V0
SW	T7,0000 (A2)
JAL	8009FDA0
LW	A0,0018 (SP)
OR	V0,R0,R0
LW	RA,0014 (SP)
ADDIU	SP,SP,0018
JR	RA
NOP

800A204C	0x505CC	7F5D
ADDIU	SP,SP,FFE8
SW	RA,0014 (SP)
SW	A0,0018 (SP)
OR	A2,A1,R0
LW	A1,0000 (A2)
SW	A2,001C (SP)
JAL	8009DC04
LW	A0,0018 (SP)
LW	A2,001C (SP)
LW	T6,0000 (A2)
ADDU	T7,T6,V0
SW	T7,0000 (A2)
JAL	8009FDF8
LW	A0,0018 (SP)
OR	V0,R0,R0
LW	RA,0014 (SP)
ADDIU	SP,SP,0018
JR	RA
NOP

800A2098	0x50618	7F5E
ADDIU	SP,SP,FFE8
SW	RA,0014 (SP)
OR	A2,A1,R0
LW	A1,0000 (A2)
JAL	8009DC04
SW	A2,001C (SP)
LW	A2,001C (SP)
LW	T6,0000 (A2)
ADDU	T7,T6,V0
JAL	80065040	;returns V0=801425C0, base of selectmenu data
SW	T7,0000 (A2)
JAL	80065EE8	;stores 1->80142678
OR	A0,V0,R0
OR	V0,R0,R0
LW	RA,0014 (SP)
ADDIU	SP,SP,0018
JR	RA
NOP

800A20E0	0x50660	7F5F
ADDIU	SP,SP,FFE8
SW	RA,0014 (SP)
SW	A0,0018 (SP)
OR	A2,A1,R0
JAL	8009DBE0	;V0=1 if value at 80136F34 > 0
SW	A2,001C (SP)
BEQ	V0,R0,800A2130
LW	A2,001C (SP)
LW	A1,0000 (A2)
SW	A2,001C (SP)
JAL	8009DC04
LW	A0,0018 (SP)
LW	A2,001C (SP)
LW	T6,0000 (A2)
ADDU	T7,T6,V0
SW	T7,0000 (A2)
LW	T9,0018 (SP)
OR	V0,R0,R0
BEQ	R0,R0,800A2140
SW	T7,02A0 (T9)
//800A2130:
LW	T0,0000 (A2)
LW	T1,0018 (SP)
ADDIU	V0,R0,0002
SW	T0,02A0 (T1)
//800A2140:
LW	RA,0014 (SP)
ADDIU	SP,SP,0018
JR	RA
NOP

800A2150	0x506D0	7F60
ADDIU	SP,SP,FFE8
SW	RA,0014 (SP)
SW	A0,0018 (SP)
OR	A2,A1,R0
JAL	8009DBE0
SW	A2,001C (SP)
BNEZ	V0,800A21A0
LW	A2,001C (SP)
LW	A1,0000 (A2)
SW	A2,001C (SP)
JAL	8009DC04
LW	A0,0018 (SP)
LW	A2,001C (SP)
LW	T6,0000 (A2)
ADDU	T7,T6,V0
SW	T7,0000 (A2)
LW	T9,0018 (SP)
OR	V0,R0,R0
BEQ	R0,R0,800A21B0
SW	T7,02A0 (T9)
LW	T0,0000 (A2)
LW	T1,0018 (SP)
ADDIU	V0,R0,0002
SW	T0,02A0 (T1)
LW	RA,0014 (SP)
ADDIU	SP,SP,0018
JR	RA
NOP

800A21C0	0x	handle 7FXX command requests
	returns V0=0,1,2
	0 is normal -keep reading, 1 unknown, 2=break reading loop
ADDIU	SP,SP,FFE8
SW	RA,0014 (SP)
LW	V0,000C (A0)	;V0=start of text bank data
LW	T6,0000 (A1)	;T6=current position in bank
ADDIU	AT,R0,007F
ADDIU	V0,V0,0010	;V0=p->text bank itself
ADDU	A2,T6,V0		;A2=p->current place in bank	(bank+curpos)
LBU	V1,0000 (A2)	;retrieve char
OR	V0,R0,R0
BNE	V1,AT,800A222C	;quit if not a 7F command
NOP
LBU	V0,0001 (A2)	;V0=command type
BLTZ	V0,800A2214	;smallest is 7F00
SLTI	AT,V0,0061
BEQ	AT,R0,800A2214	;largest allowed is 7F60
SLL	T7,V0,0x2	;T7=command->offset
LUI	V1,8010
ADDU	V1,V1,T7
LW	V1,7CB8 (V1)	;get p->command processing from table at 80107CB8
BNEZ	V1,800A221C
NOP
//800A2214:
BEQ	R0,R0,800A222C	;skip if invalid
OR	V0,R0,R0
//800A221C:	jump to process command
JALR	RA,V1
NOP
BEQ	R0,R0,800A2230
LW	RA,0014 (SP)
//800A222C:
LW	RA,0014 (SP)
//800A2230:
ADDIU	SP,SP,0018
JR	RA
NOP

the command processing jump receives the following data:
V0=command type
A0=p->text bank controller
A2=p->current position in text bank
T6=current position in bank (offset)